<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>通用类型判断</title>
</head>

<body>
    <script>
        /**
        * 判断类型
        * 1.先判断typeof的值是不是object，如果是基本类型直接返回；
        * 2.通过Object.prototype.toString()方法判断；
        */
        function getType(obj) {
            var type = typeof obj;
            if (type !== 'object') {
                return type;
            }
            return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
        }
        console.log(getType([]));// "Array" typeof []是object，因此toString返回
        console.log(getType('123'));// "string" typeof 直接返回
        console.log(getType(window));// "Window" toString返回
        console.log(getType(null));// "Null"首字母大写，typeof null是object，需toString来判断
        console.log(getType(undefined));// "undefined" typeof 直接返回
        console.log(getType());// "undefined" typeof 直接返回
        console.log(getType(function () { }));// "function" typeof能判断，因此首字母小写
        console.log(getType(/123/g));//"RegExp" toString返回        
    </script>
</body>

</html>